home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / phagexsources.lha / source / FastVecRunner.s < prev    next >
Text File  |  1993-08-20  |  6KB  |  382 lines

  1. ; Fast Vector Runner, Uses the Fast Vector Code Segment, rotates and
  2. ; Zooms an LSD Logo.  
  3.  
  4.     Opt    c-
  5.     Section    "Fast Vec Runner",Code_c
  6.  
  7. Start    Movem.l    d0-d7/a0-a6,-(sp) 
  8.     Bsr    KillSys      
  9.     
  10.     Lea    CopperList(pc),a0 
  11.     Lea    HardWare,a6      
  12.     Move.l    a0,Cop1Lc(a6)      
  13.     Move.w    #$83c0,DMACon(a6)
  14.  
  15. Loop    Bsr    VBL
  16.     Move.w    #$1200,$Dff100    
  17.     Move.w    #$0000,$Dff180    
  18.     Move.w    #$0fff,$Dff182
  19.     Lea    VectorData(pc),a0
  20.     Move.l    PicBase1(pc),a1
  21.     Move.l    PicBase2(pc),a2
  22.     Move.w    ZRot(pc),d0
  23.     Move.w    XPos(pc),d1
  24.     Move.w    YPos(pc),d2
  25.     Move.w    DistX(pc),d3
  26.     Move.w    DistY(pc),d4
  27.     Bsr    FastVecSeg+$20
  28.     Lea    ZRot(pc),a5
  29.     Move.w    d0,(a5)
  30.     
  31.     Add.w    #8,(a5)
  32.     Bsr    DoXYSine
  33.     
  34.     Btst    #6,$Bfe001      
  35.     Bne    Loop      
  36.         
  37.     Bsr    ReturnSys      
  38.     Movem.l    (sp)+,d0-d7/a0-a6 
  39.     Moveq    #0,d0      
  40.     Rts
  41.  
  42. DoXYSine    Lea    DistX(pc),a4
  43.     Lea    SineXPt(pc),a5
  44.     Bsr    DoSine
  45.     Asr.w    #1,d3
  46.     Move.w    d3,(a4)
  47.     Lea    DistY(pc),a4
  48.     Lea    SineYPt(pc),a5
  49.     Bsr    DoSine
  50.     Asr.w    #1,d3
  51.     Move.w    d3,(a4)
  52.     Lea    DistX(pc),a4
  53.     And.w    #4095,0(a4)
  54.     And.w    #4095,2(a4)
  55.     Move.w    0(a4),2(a4)
  56.     Rts
  57.  
  58. DoSine    Lea    SineData(pc),a6
  59.     Moveq    #0,d2
  60.     Moveq    #0,d3
  61.     Move.l    08(a5),d0
  62.     Move.l    12(a5),d1
  63.     Add.l    d0,00(a5)
  64.     Add.l    d1,04(a5)
  65.     And.l    #$ffe,00(a5)    
  66.     And.l    #$ffe,04(a5)    
  67.     Move.l    00(a5),d0
  68.     Move.l    04(a5),d1    
  69.     Move.w    (a6,d0.l),d2
  70.     Move.w    (a6,d1.l),d3    
  71.     Add.l    d2,d3    
  72.     Asl.w    #3,d3
  73.     Add.w    #4096,d3
  74.     Rts        
  75.  
  76. KillSys    Bsr.s    SysWait    
  77.  
  78.     Move.l    $4,a6    
  79.     Lea    GFXName(pc),a1    
  80.     Moveq    #0,d0    
  81.     Jsr    -552(a6)    
  82.         
  83.     Lea    OldCop1(pc),a5
  84.     Move.l    $26(a0),$0(a5)    
  85.     Move.l    $32(a0),$4(a5)    
  86.     
  87.     Lea    HardWare,a6
  88.     Move.w    IntEnaR(a6),d0    
  89.     Move.w    DMAConR(a6),d1  
  90.     Or.w    #$8000,d0    
  91.     And.w    #$03ff,d1    
  92.     Or.w    #$8000,d1    
  93.     Move.w    d0,$8(a5)    
  94.     Move.w    d1,$a(a5)    
  95.     
  96.     Move.w    #$7fff,IntEna(a6) 
  97.     Move.w    #$7fff,DMACon(a6) 
  98.     Rts
  99.  
  100. SysWait    Move.w    #15,d7    
  101. SysWaitLoop    Move.l    #$05000,d1    
  102.     Bsr.s    WaitVBL    
  103.     Bsr.s    VBL    
  104.     Dbf    d7,SysWaitLoop    
  105.     Rts
  106.  
  107. VBL    Move.l    #$13000,d1    
  108. WaitVBL    Movem.l    d0-d1/a6,-(sp)    
  109.     Lea    HardWare,a6    
  110. WaitVBLLoop    Move.l    VPosR(a6),d0    
  111.     And.l    #$1ff00,d0    
  112.     Cmp.l    d1,d0    
  113.     Bne.s    WaitVBLLoop    
  114.     Movem.l    (sp)+,d0-d1/a6    
  115.     Rts        
  116.  
  117. ReturnSys    Lea    HardWare,a6    
  118.     Move.w    OldIntEna(pc),IntEna(a6)
  119.     Move.w    OldDMACon(pc),DMACon(a6)
  120.     Move.l    OldCop1(pc),Cop1lc(a6)
  121.     Move.l    OldCop2(pc),Cop2lc(a6)
  122.     Rts    
  123.  
  124. GFXName    Dc.b    "graphics.library",0
  125.     Even
  126. OldCop1    Dc.l    0    
  127. OldCop2    Dc.l    0    
  128. OldIntEna    Dc.w    0    
  129. OldDmaCon    Dc.w    0
  130.  
  131. PicBase1    Dc.l    $e0000
  132. PicBase2    Dc.l    $e4000
  133.     
  134. ZRot    Dc.w    10
  135. XPos    Dc.w    176
  136. YPos    Dc.w    148
  137. DistX    Dc.w    500
  138. DistY    Dc.w    500
  139.  
  140. SineXPt    Dc.l    0
  141. SineXPt1    Dc.l    0
  142. SineXAdd    Dc.l    70
  143. SineXAdd1    Dc.l    54
  144.  
  145. SineYPt    Dc.l    0
  146. SineYPt1    Dc.l    0
  147. SineYAdd    Dc.l    66
  148. SineYAdd1    Dc.l    44
  149.  
  150. Cmv    Macro
  151.     Dc.w    \2,\1
  152.     EndM
  153.     
  154. Cwt    Macro
  155.     Dc.w    (\1*$100)+$01,$fffe
  156.     EndM    
  157.     
  158. CwtBlit    Macro
  159.     Dc.w    $1,0
  160.     EndM    
  161.  
  162. Pal    Macro
  163.     Dc.w    $ffe1,$fffe
  164.     EndM    
  165.  
  166. EndCop    Macro
  167.     Dc.w    $ffff,$fffe
  168.     EndM    
  169.  
  170. CopperList    Cwt    $15    
  171.     Cmv    $0200,BplCon0    
  172.     Cmv    $00bb,BplCon1    
  173.     Cmv    $000a,BplCon2    
  174.     Cmv    $1681,DiwStrt    
  175.     Cmv    $36c1,DiwStop
  176.     Cmv    $0034,DdfStrt    
  177.     Cmv    $00c8,DdfStop    
  178.     Cmv    $0,BplMod1
  179.     Cmv    $0,BplMod2
  180.     
  181.     Cwt    $25        
  182.     Cmv    $0000,Color01
  183.     Cmv    $0fff,Color01
  184.     
  185. CopperBPLS    Cmv    $c,BplPt0h    
  186.     Cmv    $0,BplPt0l    
  187.     Cmv    $0,BplPt1h    
  188.     Cmv    $0,BplPt1l    
  189.     Cmv    $0,BplPt2h    
  190.     Cmv    $0,BplPt2l    
  191.     Cmv    $0,BplPt3h    
  192.     Cmv    $0,BplPt3l    
  193.     Cmv    $0,BplPt4h
  194.     Cmv    $0,BplPt4l 
  195.     
  196.     Cwt    $28    
  197.     Cmv    $1200,BplCon0    
  198.  
  199.     EndCop
  200.  
  201. VectorData    
  202. *****************************************************************************
  203. * LSD Vector Logo Data - L / S (top, dot, bottom) / D   *   Phagex 27-8-93  *
  204. *****************************************************************************
  205.  
  206. L_Points    Dc.w    42
  207.     Dc.w    $FF79,$FFEB,$FF6E,$0000,$FF79,$0017,$FFCC,$0017
  208.     Dc.w    $FFD4,$0008,$FF95,$0008,$FF92,$0001,$FF9D,$FFEB
  209.  
  210. STop_Points    Dc.w    $FFCB,$FFEB,$0026,$FFEB,$001F,$FFFA,$FFE7,$FFFA
  211.     Dc.w    $FFE3,$0001,$FFE5,$0005,$FFC2,$0005,$FFC0,$0001
  212.  
  213. SDot_Points    Dc.w    $FFF4,$FFFF,$FFF9,$FFFD,$FFFE,$FFFD,$0003,$FFFF
  214.     Dc.w    $0003,$0003,$FFFE,$0005,$FFF9,$0005,$FFF4,$0003
  215.  
  216. SBot_Points    Dc.w    $0012,$FFFD,$0035,$FFFD,$0037,$0001,$002C,$0017
  217.     Dc.w    $FFD1,$0017,$FFD8,$0008,$0010,$0008,$0014,$0001
  218.  
  219. D_Points    Dc.w    $002B,$FFEB,$0088,$FFEB,$0093,$0001,$0088,$0017
  220.     Dc.w    $0031,$0017,$0038,$0008,$006B,$0008,$006F,$0000
  221.     Dc.w    $006C,$FFFA,$0024,$FFFA
  222.  
  223. LSDConnects    Dc.w    42
  224.     Dc.w    00,01,01,02,02,03,03,04,04,05,05,06,06,07,07,00
  225.     Dc.w    08,09,09,10,10,11,11,12,12,13,13,14,14,15,15,08
  226.     Dc.w    16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,16
  227.     Dc.w    24,25,25,26,26,27,27,28,28,29,29,30,30,31,31,24
  228.     Dc.w    32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,32
  229.  
  230. SineData    Incbin    Df1:SysData/Sine1024Bs.Dat
  231.     Incbin    Df1:SysData/Sine1024Bs.Dat
  232. FastVecSeg    Incbin    Df1:CodeSegments/FastVec-Seg
  233.  
  234. ****Custom Chip Registers****
  235.  
  236. Hardware    = $Dff000
  237.  
  238. ;Control Registers
  239.  
  240. Dmaconr    = $002
  241. Vposr    = $004
  242. Vhposr    = $006
  243. Joy0dat    = $00A
  244. Joy1dat    = $00C
  245. Clxdat    = $00E
  246. Intenar    = $01C
  247. Intereqr    = $01E
  248. Copcon    = $02E
  249.  
  250. ;Blitter Registers
  251.  
  252. Bltcon0    = $040
  253. Bltcon1    = $042
  254. Bltafwm    = $044
  255. Bltalwm    = $046
  256. Bltcpth    = $048
  257. Bltcptl    = $04A
  258. Bltbpth    = $04C
  259. Bltbptl    = $04E
  260. Bltapth    = $050
  261. Bltaptl    = $052
  262. Bltdpth    = $054
  263. Bltdptl    = $056
  264. Bltsize    = $058
  265. Bltcmod    = $060
  266. Bltbmod    = $062
  267. Bltamod    = $064
  268. Bltdmod    = $066
  269. Bltcdat    = $070
  270. Bltbdat    = $072
  271. Bltadat    = $074
  272.  
  273. ;Copper Registers
  274.  
  275. Cop1lc    = $080
  276. Cop1lch    = $080
  277. Cop1lcl    = $082
  278. Cop2lc    = $084
  279. Cop2lch    = $084
  280. Cop2lcl    = $086
  281. Copjmp1    = $088
  282. Copjmp2    = $08A
  283. Diwstrt    = $08E
  284. Diwstop    = $090
  285. Ddfstrt    = $092
  286. Ddfstop    = $094
  287. Dmacon    = $096
  288. Clxcon    = $098
  289. Intena    = $09A
  290. Intreq    = $09C
  291.  
  292. ;BitPlane Registers 
  293.  
  294. BplCon0    = $100
  295. BplCon1    = $102
  296. BplCon2    = $104
  297. BplMod1    = $108
  298. BplMod2    = $10a
  299.  
  300. BplPt0h    = $0e0
  301. BplPt0l    = $0e2
  302. BplPt1h    = $0e4
  303. BplPt1l    = $0e6
  304. BplPt2h    = $0e8
  305. BplPt2l    = $0ea
  306. BplPt3h    = $0ec
  307. BplPt3l    = $0ee
  308. BplPt4h    = $0f0
  309. BplPt4l    = $0f2
  310. BplPt5h    = $0f4
  311. BplPt5l    = $0f6
  312.  
  313. ;Colour Registers
  314.  
  315. Color00    = $180
  316. Color01    = $182
  317. Color02    = $184
  318. Color03    = $186
  319. Color04    = $188
  320. Color05    = $18a
  321. Color06    = $18c
  322. Color07    = $18e
  323. Color08    = $190
  324. Color09    = $192
  325. Color10    = $194
  326. Color11    = $196
  327. Color12    = $198
  328. Color13     = $19a
  329. Color14     = $19c
  330. Color15     = $19e
  331. Color16     = $1a0
  332. Color17     = $1a2
  333. Color18     = $1a4
  334. Color19     = $1a6
  335. Color20     = $1a8
  336. Color21     = $1aa
  337. Color22     = $1ac
  338. Color23     = $1ae
  339. Color24     = $1b0
  340. Color25     = $1b2
  341. Color26     = $1b4
  342. Color27     = $1b6
  343. Color28     = $1b8
  344. Color29     = $1ba
  345. Color30     = $1bc
  346. Color31     = $1be
  347.  
  348. EcsNop    = $1fe
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.